import { Badge, Tab, Tabs } from '@theme';

# 总览

## RsdoctorRspackPlugin 插件

**RsdoctorRspackPlugin** 类由 `@rsdoctor/rspack-plugin` 导出，配置项是 [RsdoctorRspackPluginOptions](#rsdoctorrspackpluginoptions)。

<Tabs>

<Tab label="esm">

```ts
import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin';

new RsdoctorRspackPlugin({
  /** RsdoctorRspackPluginOptions */
});
```

</Tab>

<Tab label="cjs">

```js
const { RsdoctorRspackPlugin } = require('@rsdoctor/rspack-plugin');

new RsdoctorRspackPlugin({
  /** RsdoctorRspackPluginOptions */
});
```

</Tab>

</Tabs>

## RsdoctorWebpackPlugin 插件

**RsdoctorWebpackPlugin** 类由 `@rsdoctor/webpack-plugin` 导出，配置项是 [RsdoctorWebpackPluginOptions](#rsdoctorwebpackpluginoptions)。

<Tabs>

<Tab label="esm">

```ts
import { RsdoctorWebpackPlugin } from '@rsdoctor/webpack-plugin';

new RsdoctorWebpackPlugin({
  /** RsdoctorWebpackPluginOptions */
});
```

</Tab>

<Tab label="cjs">

```js
const { RsdoctorWebpackPlugin } = require('@rsdoctor/webpack-plugin');

new RsdoctorWebpackPlugin({
  /** RsdoctorWebpackPluginOptions */
});
```

</Tab>

</Tabs>

## 配置项

**类型：** `Object`

这个 `Options` 是 [RsdoctorRspackPlugin](#rsdoctorrspackplugin-%E6%8F%92%E4%BB%B6) 和 [RsdoctorWebpackPlugin](#rsdoctorwebpackplugin-%E6%8F%92%E4%BB%B6) 的配置项。它包含以下属性值：

- [disableClientServer](./disableClientServer.mdx) - **客户端服务控制**：是否在分析完成后不自动打开 Rsdoctor 报告服务。
- [experiments](./experiments.mdx) - **实验性功能配置**：启用 Rspack 插件的实验性功能，如原生插件性能优化。
- [features](./features.mdx) - **特性开关配置**：控制 Rsdoctor 的各项分析功能，如 loader 分析、bundle 分析、规则检查等
- [output](./output.mdx) - **输出相关配置**：控制报告的输出格式、目录等选项，包括 mode、options、reportCodeType 等
- [port](./port.mdx) - **服务端口配置**：设置 Rsdoctor 开发服务器的端口号，用于本地开发时的报告预览
- [supports](./supports.mdx) - **特性支持配置**：启用特定构建工具的兼容性支持，如 BannerPlugin 等
- [brief](./brief.mdx) - **Brief 模式的配置**：控制简要模式报告的生成，包括 HTML 文件名和是否生成 JSON 数据文件
- [mode](./mode.mdx) - **构建报告数据输出模式**：选择报告的输出模式，支持 normal（普通模式）和 brief（简要模式）

### RsdoctorRspackPluginOptions

```ts
interface RsdoctorWebpackPluginOptions<
  Rules extends LinterType.ExtendRuleData[],
> {
  linter?: LinterType.Options<Rules, InternalRules>;

  /** Rsdoctor 功能开关 */
  features?:
    | Plugin.RsdoctorWebpackPluginFeatures
    | Array<keyof Plugin.RsdoctorWebpackPluginFeatures>;

  /**
   * @deprecated 使用 `output.mode` 代替，如果使用 `lite` 模式，请使用 `output.reportCodeType: 'noCode' or 'noAssetsAndModuleSource'` 代替
   * Rsdoctor 模式选项：
   * - normal: 普通模式
   * - brief: 简要模式，仅显示持续时间分析和构建产物分析结果，不显示任何代码部分
   */
  mode?: 'brief' | 'normal' | 'lite';

  disableClientServer?: boolean;

  supports?: ISupport;

  port?: number;

  /**
   * @deprecated 使用 `output.options.htmlOptions` 代替
   */
  brief?: Config.BriefConfig;

  output?: Config.IOutput<'brief' | 'normal'>;

  experiments?: RsdoctorRspackPluginExperiments;
}

interface RsdoctorRspackPluginExperiments {
  /**
   * 是否启用原生插件以提高性能
   * @default false
   */
  enableNativePlugin?: boolean;
}
```

### RsdoctorWebpackPluginOptions

RsdoctorWebpackPlugin 同 `Omit<RsdoctorRspackPluginOptions, 'experiments'>` 类型。
